﻿#pragma once
#include <QSizeF>
#include <QPolygonF>
#include <QColor>
#include <QMap>
#include <QImage>


class GraphicsBaseItem;

class GraphicsUtil
{
public:
	enum BorderColor {
		Blue_Enum,// 蓝色
		Cyan_Enum // 青色
	};

	// isContainer = false,返回的尺寸不超过(width,height),内接矩形
	// isContainer = true,返回的尺寸大于等于(width,height)，外接矩形
	static QSizeF getKeepRatioSize(qreal width, qreal height, qreal ratio, bool isContainer = false);

	// 获取矩形旋转后的四个角点坐标
	static QPolygonF mapAnglePolygon(const QRectF& rect, qreal angle);

	static QColor getBorderColor(BorderColor borderColor);

	// 截取item的显示图片，TODO，子图元没有绘制出来，待优化
	static void grapItemImage(GraphicsBaseItem* item, QImage& image);

	// 将角度标准化到0-360度之间
	static qreal normalizeAngle(qreal angle);

	// 将图元以中心点旋转angle
	static QImage roateImage(const QImage& image, qreal angle);

	// 获取非透明图片的外接矩形
	static QRect imageBoundingRect(const QImage& image);

	// 图像合并,只显示target中mask中的图片
	static QImage composeImage(const QImage& mask, const QImage& target);
private:
	// 边框色索引表
	static QMap<BorderColor, QColor> m_borderColorMap;
};

using GraphicsBorderColor = GraphicsUtil::BorderColor;